Skip to content

[pull] main from MetaMask:main#354

Merged
pull[bot] merged 9 commits into
Reality2byte:mainfrom
MetaMask:main
Nov 25, 2025
Merged

[pull] main from MetaMask:main#354
pull[bot] merged 9 commits into
Reality2byte:mainfrom
MetaMask:main

Conversation

@pull
Copy link
Copy Markdown

@pull pull Bot commented Nov 25, 2025

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

bergarces and others added 9 commits November 25, 2025 18:09
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**

<!--
Write a short description of the changes included in this pull request,
also include relevant motivation and context. Have in mind the following
questions:
1. What is the reason for the change?
2. What is the improvement/solution?
-->

The polling rate for mobile is set to 180s, which is frustratring for
users, as they cannot see balances updating at the default 30s that we
have for extension and they think something is wrong.

Setting the updates to the default 30s is likely to lower the number of
tickets with balance issues that we are currently getting.

## **Changelog**

<!--
If this PR is not End-User-Facing and should not show up in the
CHANGELOG, you can choose to either:
1. Write `CHANGELOG entry: null`
2. Label with `no-changelog`

If this PR is End-User-Facing, please write a short User-Facing
description in the past tense like:
`CHANGELOG entry: Added a new tab for users to see their NFTs`
`CHANGELOG entry: Fixed a bug that was causing some NFTs to flicker`

(This helps the Release Engineer do their job more quickly and
accurately)
-->

CHANGELOG entry: Fixed balance update polling rate

## **Related issues**

Fixes: https://consensyssoftware.atlassian.net/browse/ASSETS-1111
Fixes: https://consensyssoftware.atlassian.net/browse/ASSETS-1394
Fixes: https://consensyssoftware.atlassian.net/browse/ASSETS-1291
Fixes: #23130

## **Manual testing steps**

```gherkin
Feature: my feature name

  Scenario: user [verb for user action]
    Given [describe expected initial app state]

    When user [verb for user action]
    Then [describe expected outcome]
```

## **Screenshots/Recordings**

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->

### **Before**

<!-- [screenshots/recordings] -->

### **After**

<!-- [screenshots/recordings] -->

## **Pre-merge author checklist**

- [X] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [X] I've completed the PR template to the best of my ability
- [X] I’ve included tests if applicable
- [X] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [X] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **Pre-merge reviewer checklist**

- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**

The following utilities are referenced from other parts of the codebase.
We either move them into global scope (if multiple references are found)
or move them into local scope of the relevant consumer.

<!--
Write a short description of the changes included in this pull request,
also include relevant motivation and context. Have in mind the following
questions:
1. What is the reason for the change?
2. What is the improvement/solution?
-->

## **Changelog**

<!--
If this PR is not End-User-Facing and should not show up in the
CHANGELOG, you can choose to either:
1. Write `CHANGELOG entry: null`
2. Label with `no-changelog`

If this PR is End-User-Facing, please write a short User-Facing
description in the past tense like:
`CHANGELOG entry: Added a new tab for users to see their NFTs`
`CHANGELOG entry: Fixed a bug that was causing some NFTs to flicker`

(This helps the Release Engineer do their job more quickly and
accurately)
-->

CHANGELOG entry: null

## **Related issues**

Fixes: https://consensyssoftware.atlassian.net/browse/SWAPS-3478

## **Manual testing steps**

```gherkin
No business logic is affected, just ensure that there are not regressions in swaps and transaction screen related to swap and bridges.
```

## **Screenshots/Recordings**

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->

### **Before**

<!-- [screenshots/recordings] -->

### **After**

<!-- [screenshots/recordings] -->

## **Pre-merge author checklist**

- [x] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [x] I've completed the PR template to the best of my ability
- [x] I’ve included tests if applicable
- [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [x] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **Pre-merge reviewer checklist**

- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Extracts `isSwapsNativeAsset` to `util/bridge` and moves stablecoin
slippage hook under Bridge, updating imports and tests across Swaps and
Transaction utils.
> 
> - **Refactor**:
> - Centralizes `isSwapsNativeAsset` in `app/util/bridge/index.ts`;
removes duplicate from `components/UI/Swaps/utils` and updates all
consumers (`Swaps` views, utils, transaction utils).
> - Relocates stablecoin slippage logic to
`components/UI/Bridge/hooks/useStablecoinsDefaultSlippage`; updates
`useInitialSlippage` to consume `getIsStablecoinPair` from the new
location and fixes import paths.
> - **Swaps UI**:
> - Updates `QuotesView`, `Swaps` amount view, token utils, and balance
hook to import `isSwapsNativeAsset` from `util/bridge` and use the
relocated slippage hook.
> - **Tests**:
>   - Adds `app/util/bridge/index.test.ts` for `isSwapsNativeAsset`.
>   - Updates `useStablecoinsDefaultSlippage` test to new paths.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
5e6b5cf. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**

We need to bump the `keyring-api` to version
[21.2.0](https://github.com/MetaMask/accounts/compare/@metamask/keyring-api@21.1.0...@metamask/keyring-api@21.2.0)
in order to have the latest types for `stake:deposit` and
`stake:withdraw`. [Ref](MetaMask/accounts#394)

## **Changelog**

<!--
If this PR is not End-User-Facing and should not show up in the
CHANGELOG, you can choose to either:
1. Write `CHANGELOG entry: null`
2. Label with `no-changelog`

If this PR is End-User-Facing, please write a short User-Facing
description in the past tense like:
`CHANGELOG entry: Added a new tab for users to see their NFTs`
`CHANGELOG entry: Fixed a bug that was causing some NFTs to flicker`

(This helps the Release Engineer do their job more quickly and
accurately)
-->

CHANGELOG entry: null

## **Related issues**

Fixes: #23251

## **Manual testing steps**

```gherkin
Feature: my feature name

  Scenario: user [verb for user action]
    Given [describe expected initial app state]

    When user [verb for user action]
    Then [describe expected outcome]
```

## **Screenshots/Recordings**

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->

### **Before**

<!-- [screenshots/recordings] -->

### **After**

<!-- [screenshots/recordings] -->

## **Pre-merge author checklist**

- [ ] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [ ] I've completed the PR template to the best of my ability
- [ ] I’ve included tests if applicable
- [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [ ] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **Pre-merge reviewer checklist**

- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.


<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Updates dependencies to @metamask/keyring-api ^21.2.0 and
@metamask/tron-wallet-snap ^1.12.1.
> 
> - **Dependencies**:
>   - Upgrade `@metamask/keyring-api` to `^21.2.0`.
>   - Upgrade `@metamask/tron-wallet-snap` to `^1.12.1`.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
616136e. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

---------

Co-authored-by: Alejandro Garcia <alejandro.garcia@consensys.net>
…across accounts (#23257)

<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**

1. What is the reason for the change?
There is a bug where we are not able to see the correct staked ethereum
balance when there are multiple accounts with staked ethereum. There is
also a bug where we are not able to see the APR and Earn History for a
user with 0 staked ethereum balance.

2. What is the improvement/solution?
- Ensure that the native asset is not set isStaked true, as the Staked
Ethereum asset is the one which should be set isStaked true.
- Add accountId to filtering of token data in assets list selector to
ensure we have correct balances across multiple accounts for staked
ethereum.
- Allow zero value staked ethereum in the allTokens selector, but limit
to supported staking chains to lessen amount of tokens returned.

<!--
Write a short description of the changes included in this pull request,
also include relevant motivation and context. Have in mind the following
questions:
1. What is the reason for the change?
2. What is the improvement/solution?
-->

## **Changelog**

<!--
If this PR is not End-User-Facing and should not show up in the
CHANGELOG, you can choose to either:
1. Write `CHANGELOG entry: null`
2. Label with `no-changelog`

If this PR is End-User-Facing, please write a short User-Facing
description in the past tense like:
`CHANGELOG entry: Added a new tab for users to see their NFTs`
`CHANGELOG entry: Fixed a bug that was causing some NFTs to flicker`

(This helps the Release Engineer do their job more quickly and
accurately)
-->

CHANGELOG entry: null

## **Related issues**

Fixes: https://consensyssoftware.atlassian.net/browse/MUSD-114
Fixes: https://consensyssoftware.atlassian.net/browse/MUSD-112
Fixes: #23259
Fixes: #23260
## **Manual testing steps**

```gherkin
Feature: fix staked eth balances across multiple accounts and apr / earn history for zero balance staked eth
  Scenario: user has multiple accounts with ETH
    Given user stakes ETH on all accounts

    When user views the token list
    Then the Staked Ethereum balance should be correct in each account
    Then the Staked Ethereum asset detail page should show the correct amount for the account
    Then the Ethereum asset detail page should show the correct Staked Ethereum amount
    
 Scenario: user has multiple accounts with ETH, 1 with 0 Staked ETH
    Given user has 0 Staked Eth on an account

    When user views the token list
    Then the Staked Ethereum balance should not show in token list
    Then the Ethereum asset detail page should show no Staked Ethereum at all
    Then the Ethereum asset detail page should show APR and Earn History even when 0 Staked ETH
```

## **Screenshots/Recordings**

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->

### **Before**


https://github.com/user-attachments/assets/b08a1c20-6e57-45cf-b238-53d3b5008b6a

<!-- [screenshots/recordings] -->

### **After**


https://github.com/user-attachments/assets/488c8b0e-57a8-4228-8e6f-0b43c00ee952

<img width="200" alt="Simulator Screenshot - iPhone 17 Pro - 2025-11-25
at 10 15 28"
src="https://github.com/user-attachments/assets/0ee7d224-8b4e-413a-8f52-9e7db6eb5182"
/>
<img width="200" alt="Simulator Screenshot - iPhone 17 Pro - 2025-11-25
at 10 15 31"
src="https://github.com/user-attachments/assets/8c41b2b2-64fa-4a07-bd7a-80f98f7c6194"
/>

<!-- [screenshots/recordings] -->

## **Pre-merge author checklist**

- [x] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [x] I've completed the PR template to the best of my ability
- [x] I’ve included tests if applicable
- [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [x] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **Pre-merge reviewer checklist**

- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Ensure native assets are never marked staked, include a distinct
Staked Ethereum entry, and adjust zero-balance filtering to retain
native/staked tokens on the current network; update tests accordingly.
> 
> - **Selectors**:
> - Set `isStaked: false` for native balances in
`selectedAccountNativeTokenCachedBalanceByChainId*`.
> - Update `selectNativeTokensAcrossChains` to always add a separate
"Staked Ethereum" token alongside the native asset using cached staked
balance data.
> - Modify zero-balance behavior in
`selectEvmTokensWithZeroBalanceFilter` to keep native and staked tokens
on the current network when hiding zero balances.
>   - Cleanup: remove unused `toHex` import.
> - **Tests**:
> - Adjust expectations for `isStaked` on native balances and
zero-balance filtering results.
> - Assert presence of "Staked Ethereum" in filtered lists and updated
token counts.
>   - Maintain memoization and network filtering coverage.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
ce72756. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
…ng (#23250)

<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**
Developed pull-to-refresh functionality on the min trending page plus a
fe enhancements and code cleanup that was needed on some of the hooks.

<!--
Write a short description of the changes included in this pull request,
also include relevant motivation and context. Have in mind the following
questions:
1. What is the reason for the change?
2. What is the improvement/solution?
-->

## **Changelog**

<!--
If this PR is not End-User-Facing and should not show up in the
CHANGELOG, you can choose to either:
1. Write `CHANGELOG entry: null`
2. Label with `no-changelog`

If this PR is End-User-Facing, please write a short User-Facing
description in the past tense like:
`CHANGELOG entry: Added a new tab for users to see their NFTs`
`CHANGELOG entry: Fixed a bug that was causing some NFTs to flicker`

(This helps the Release Engineer do their job more quickly and
accurately)
-->

CHANGELOG entry: added pull-to-refresh for trending and some code
cleanup

## **Related issues**

Fixes: https://consensyssoftware.atlassian.net/browse/ASSETS-1836 &
https://consensyssoftware.atlassian.net/browse/ASSETS-1837

## **Manual testing steps**

```gherkin
Feature: my feature name

  Scenario: user [verb for user action]
    Given [describe expected initial app state]

    When user [verb for user action]
    Then [describe expected outcome]
```

## **Screenshots/Recordings**

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->

### **Before**

<!-- [screenshots/recordings] -->

### **After**


https://github.com/user-attachments/assets/54b0d39c-e38b-4eef-83f8-3ab3e1d8c223


<!-- [screenshots/recordings] -->

## **Pre-merge author checklist**

- [ ] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [ ] I've completed the PR template to the best of my ability
- [ ] I’ve included tests if applicable
- [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [ ] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **Pre-merge reviewer checklist**

- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Adds pull-to-refresh across Trending views and introduces a unified
`useTrendingSearch` hook while refactoring requests to support
refetching and remove debouncing.
> 
> - **Trending UI**
> - Add pull-to-refresh to `TrendingView` (main feed) and
`TrendingTokensFullView` via `RefreshControl`.
> - Propagate refresh via new `refreshTrigger` to `SectionCard` and
`SectionCarrousel` which call each section’s `refetch`.
> - **Sections Config**
> - Tokens section now uses `useTrendingSearch`; sections expose
`refetch` and accept `refreshTrigger`.
> - Perps and Predictions sections pass through refresh and loading from
their hooks.
> - **New Hook**: `useTrendingSearch`
> - Combines trending and search results, de-duplicates, applies
sorting, and exposes `refetch` and loading states.
> - **Requests Refactor**
> - `useTrendingRequest` and `useSearchRequest`: remove debouncing,
stabilize inputs, guard against stale responses, return plain arrays,
and expose direct `fetch/search` functions.
> - `useSitesData`: add `refetch` and memoized fetching; minor cleanup.
> - **Misc**
>   - Update imports/paths for `usePopularNetworks`.
> - Extensive test updates for new APIs, loading behavior, and
race-condition handling.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
8c77d6e. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

---------

Co-authored-by: sahar-fehri <sahar.fehri@consensys.net>
…eeplinks (#23275)

<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**

This PR enhances the predict deeplink handler to include UTM source
tracking in the `entryPoint` parameter passed to screens.

**What changed:**
- Parse `utm_source` from predict deeplink URL parameters
- Append `utm_source` to the `entryPoint` (e.g., `deeplink_test`,
`carousel_twitter`)
- Skip appending if `utm_source` equals the base `entryPoint` to avoid
duplicates like `deeplink_deeplink`

**Why:**
This allows analytics to track the specific UTM source that brought
users to the predict feature via deeplinks, enabling better attribution
and campaign performance measurement.

**Examples:**
| URL | Origin | entryPoint |
|-----|--------|------------|
| `predict?utm_source=test` | - | `deeplink_test` |
| `predict?utm_source=twitter` | `carousel` | `carousel_twitter` |
| `predict?utm_source=deeplink` | - | `deeplink` (no duplicate) |

## **Changelog**

CHANGELOG entry: null

## **Related issues**

Fixes:

## **Manual testing steps**

```gherkin
Feature: Predict deeplink utm_source tracking

  Scenario: user opens predict deeplink with utm_source parameter
    Given the app is installed and user is logged in

    When user opens deeplink "https://metamask.app.link/predict?utm_source=test"
    Then user navigates to predict market list
    And entryPoint is set to "deeplink_test"

  Scenario: user opens predict deeplink with market and utm_source
    Given the app is installed and user is logged in

    When user opens deeplink "https://metamask.app.link/predict?marketId=1231&utm_source=twitter"
    Then user navigates to predict market details for market 1231
    And entryPoint is set to "deeplink_twitter"

  Scenario: user opens predict deeplink with utm_source matching origin
    Given the app is installed and user is logged in

    When user opens deeplink "https://metamask.app.link/predict?utm_source=deeplink"
    Then user navigates to predict market list
    And entryPoint is set to "deeplink" (not "deeplink_deeplink")
```

## **Screenshots/Recordings**

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->

### **Before**

N/A - No UI changes

### **After**

N/A - No UI changes

## **Pre-merge author checklist**

- [x] I've followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [x] I've completed the PR template to the best of my ability
- [x] I've included tests if applicable
- [x] I've documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [ ] I've applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **Pre-merge reviewer checklist**

- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.


<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Parse utm_source from predict deeplinks and append it to the
entryPoint (unless equal to base), updating navigation behavior and logs
with comprehensive tests.
> 
> - **Core:
`app/core/DeeplinkManager/handlers/legacy/handlePredictUrl.ts`**
>   - Parse `utm_source` from query into `PredictNavigationParams`.
> - Derive `entryPoint` from `origin` (or `deeplink`) and append
`_<utm_source>` when present and different.
> - Apply computed `entryPoint` to both market details and market list
navigations.
> - Enhance logging to include parsed `utmSource` and final
`entryPoint`.
> - **Tests: `__tests__/handlePredictUrl.test.ts`**
> - Update expectations to reflect `entryPoint` suffixing when
`utm_source` exists.
> - Add cases for multiple params, various origins
(carousel/deeplink/notification), equality guard (no duplicate), and
no-market with `utm_source`.
> - Verify logs include `utmSource` in parsed params and `entryPoint`
output.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
0c66381. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
## **Description**

Condense market data disclaimer copy

## **Changelog**

CHANGELOG entry: Update market data disclaimer copy

## **Related issues**

Fixes: https://consensyssoftware.atlassian.net/browse/MDP-234
 
## **Manual testing steps**

```gherkin
Feature: my feature name

  Scenario: user [verb for user action]
    Given [describe expected initial app state]

    When user [verb for user action]
    Then [describe expected outcome]
```

## **Screenshots/Recordings**

`~`

### **Before**

<img width="500" alt="Simulator Screenshot - iPhone 16 Pro Max -
2025-11-24 at 17 30 31"
src="https://github.com/user-attachments/assets/29233d08-ae66-4931-a597-733685a0d0c3"
/>

### **After**

<img width="500" alt="Simulator Screenshot - iPhone 16 Pro Max -
2025-11-24 at 17 35 53"
src="https://github.com/user-attachments/assets/7a07d179-c121-44be-b0af-9030f63c3191"
/>

## **Pre-merge author checklist**

- [x] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [x] I've completed the PR template to the best of my ability
- [x] I’ve included tests if applicable
- [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [x] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **Pre-merge reviewer checklist**

- [x] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [x] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Shortens the asset market data disclaimer and updates related
snapshots and English locale string.
> 
> - **Asset View**:
> - **Copy**: Shortens market data disclaimer displayed in `Asset` view.
> - **Tests**: Updates `__snapshots__/index.test.js.snap` to reflect new
disclaimer text.
> - **Localization**:
> - Updates `locales/languages/en.json` `asset_overview.disclaimer`
string.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
b25843d. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**

add mon currency to the currencies list

<!--
Write a short description of the changes included in this pull request,
also include relevant motivation and context. Have in mind the following
questions:
1. What is the reason for the change?
2. What is the improvement/solution?
-->

## **Changelog**

<!--
If this PR is not End-User-Facing and should not show up in the
CHANGELOG, you can choose to either:
1. Write `CHANGELOG entry: null`
2. Label with `no-changelog`

If this PR is End-User-Facing, please write a short User-Facing
description in the past tense like:
`CHANGELOG entry: Added a new tab for users to see their NFTs`
`CHANGELOG entry: Fixed a bug that was causing some NFTs to flicker`

(This helps the Release Engineer do their job more quickly and
accurately)
-->

CHANGELOG entry: add mon currency to currencies list

## **Related issues**

Fixes:

## **Manual testing steps**

```gherkin
Feature: my feature name

  Scenario: user [verb for user action]
    Given [describe expected initial app state]

    When user [verb for user action]
    Then [describe expected outcome]
```

## **Screenshots/Recordings**

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->

### **Before**

<!-- [screenshots/recordings] -->

### **After**


<img width="457" height="900" alt="Screenshot 2025-11-25 at 18 47 45"
src="https://github.com/user-attachments/assets/64f9d752-da8b-44ea-978b-5ec8989c14c6"
/>

<!-- [screenshots/recordings] -->

## **Pre-merge author checklist**

- [ ] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [ ] I've completed the PR template to the best of my ability
- [ ] I’ve included tests if applicable
- [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [ ] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **Pre-merge reviewer checklist**

- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Normalizes account keys to lowercase in TokenBalancesController and
adds 'mon' to supported currencies.
> 
> - **Assets Controllers**:
> - **TokenBalancesController**: Normalize account keys to lowercase
when reading/writing `d.tokenBalances` in
`dist/TokenBalancesController.{cjs,mjs}` to ensure consistent balance
updates.
> - **Token Prices Service**:
> - Add `"mon"` (Monad) to `SUPPORTED_CURRENCIES` in
`dist/token-prices-service/codefi-v2.cjs`.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
d9452ad. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**

The purpose of this task is to add an e2e that opens a predict position

> Adds an end-to-end test for opening a prediction position with
comprehensive Polymarket mocks and minor selector/testID updates.
> 
> - **E2E Tests**:
> - Add `e2e/specs/predict/predict-open-position.spec.ts` to automate
opening a position (Celtics vs. Nets), verify balance update, positions,
and activity.
>   - Remove legacy `predict-select-bet.spec.ts`.
> - **Mocks & Test Data (Polymarket)**:
> - Introduce extensive mocks for opening positions:
`POLYMARKET_POST_OPEN_POSITION_MOCKS`, dynamic activity/positions
injectors, and balance refresh (`open-position`).
> - Add Celtics/Nets data to feeds, event details, positions, activity,
prices, and order book; ensure stable pricing/liquidity and success
responses.
> - Relax/standardize proxy URL matching across mocks and handle USDC
`balanceOf`/`allowance`.
> - **Selectors & Pages**:
> - Add `PredictBuyPreviewSelectorsIDs.PLACE_BET_BUTTON` and wire to
`PredictBuyPreview.tsx`.
> - Expose market-list back button selector; enhance
PredictDetails/MarketList page objects with actions (tap amount, Done,
Continue, Place bet, Back).
> - **Misc**:
> - Add new USDC post-open-position balance constant; minor utility/test
helper updates for feature flags and flows.
> 

## **Changelog**

<!--
If this PR is not End-User-Facing and should not show up in the
CHANGELOG, you can choose to either:
1. Write `CHANGELOG entry: null`
2. Label with `no-changelog`

If this PR is End-User-Facing, please write a short User-Facing
description in the past tense like:
`CHANGELOG entry: Added a new tab for users to see their NFTs`
`CHANGELOG entry: Fixed a bug that was causing some NFTs to flicker`

(This helps the Release Engineer do their job more quickly and
accurately)
-->

CHANGELOG entry:

## **Related issues**

Fixes:

## **Manual testing steps**

```gherkin
Feature: my feature name

  Scenario: user [verb for user action]
    Given [describe expected initial app state]

    When user [verb for user action]
    Then [describe expected outcome]
```

## **Screenshots/Recordings**

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->

### **Before**

<!-- [screenshots/recordings] -->

### **After**

<!-- [screenshots/recordings] -->

## **Pre-merge author checklist**

- [ ] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [ ] I've completed the PR template to the best of my ability
- [ ] I’ve included tests if applicable
- [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [ ] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **Pre-merge reviewer checklist**

- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Adds an end-to-end test for opening a prediction position with
comprehensive Polymarket mocks and minor selector/testID updates.
> 
> - **E2E Tests**:
> - Add `e2e/specs/predict/predict-open-position.spec.ts` to automate
opening a position (Celtics vs. Nets), verify balance update, positions,
and activity.
>   - Remove legacy `predict-select-bet.spec.ts`.
> - **Mocks & Test Data (Polymarket)**:
> - Introduce extensive mocks for opening positions:
`POLYMARKET_POST_OPEN_POSITION_MOCKS`, dynamic activity/positions
injectors, and balance refresh (`open-position`).
> - Add Celtics/Nets data to feeds, event details, positions, activity,
prices, and order book; ensure stable pricing/liquidity and success
responses.
> - Relax/standardize proxy URL matching across mocks and handle USDC
`balanceOf`/`allowance`.
> - **Selectors & Pages**:
> - Add `PredictBuyPreviewSelectorsIDs.PLACE_BET_BUTTON` and wire to
`PredictBuyPreview.tsx`.
> - Expose market-list back button selector; enhance
PredictDetails/MarketList page objects with actions (tap amount, Done,
Continue, Place bet, Back).
> - **Misc**:
> - Add new USDC post-open-position balance constant; minor utility/test
helper updates for feature flags and flows.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
8005f0c. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
@pull pull Bot locked and limited conversation to collaborators Nov 25, 2025
@pull pull Bot added the ⤵️ pull label Nov 25, 2025
@pull pull Bot merged commit 1b4206c into Reality2byte:main Nov 25, 2025
1 of 7 checks passed
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

9 participants